import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

/// 屏幕适配工具类
/// 对ScreenUtil进行二次封装，提供更便捷的适配方法
class ScreenAdapter {
  /// 获取设计稿尺寸(主流)
  static Size get designSize => Size(375, 812);

  /// 获取屏幕宽度
  static double get screenWidth => ScreenUtil().screenWidth;

  /// 获取屏幕高度
  static double get screenHeight => ScreenUtil().screenHeight;

  /// 获取状态栏高度
  static double get statusBarHeight => ScreenUtil().statusBarHeight;

  /// 获取底部安全区域高度
  static double get bottomBarHeight => ScreenUtil().bottomBarHeight;

  /// AppBar高度（默认56.0）
  static double get appBarHeight => kToolbarHeight;

  ///导航栏和状态栏的总高度
  static double get appBarStatusBarHeight => appBarHeight + statusBarHeight;

  /// 底部导航栏高度（默认56.0）
  static double get bottomNavigationBarHeight => kBottomNavigationBarHeight;

  /// 传入比例，返回屏幕高度的百分比
  static double screenHeightRatio(double ratio) => screenHeight * ratio;

  /// 传入比例，返回屏幕宽度的百分比
  static double screenWidthRatio(double ratio) => screenWidth * ratio;

  /// 底部安全区高度
  static double get bottomSafeAreaHeight => ScreenUtil().bottomBarHeight;

  /// 内容区高度 = 屏幕高度 - 状态栏 - AppBar - 底部导航栏 - 底部安全区
  static double get contentHeight =>
      screenHeight - statusBarHeight - appBarHeight - bottomNavigationBarHeight - bottomSafeAreaHeight;

  /// 获取屏幕像素比
  static double get pixelRatio => ScreenUtil().pixelRatio ?? 1.0;

  /// 获取当前设备尺寸
  static Size get deviceSize => Size(ScreenUtil().screenWidth, ScreenUtil().screenHeight);

  /// 宽度适配
  static double w(double width) => ScreenUtil().setWidth(width);

  /// 高度适配
  static double h(double height) => ScreenUtil().setHeight(height);

  /// 字体适配
  static double sp(double fontSize) => ScreenUtil().setSp(fontSize);

  /// 半径适配
  static double r(double radius) => ScreenUtil().radius(radius);

  /// 检查是否为小屏幕设备
  static bool get isSmallScreen => screenWidth < 360;

  /// 检查是否为大屏幕设备
  static bool get isLargeScreen => screenWidth > 600;

  /// 获取屏幕比例
  static double get screenRatio => screenWidth / screenHeight;

  /// 获取适配后的字体大小（根据屏幕大小调整）
  static double getAdaptiveFontSize(double baseFontSize) {
    if (isSmallScreen) {
      return sp(baseFontSize * 0.9);
    } else if (isLargeScreen) {
      return sp(baseFontSize * 1.1);
    }
    return sp(baseFontSize);
  }
}

/// 尺寸扩展方法
/// 提供更简洁的适配语法
extension SizeExtension on num {
  /// 字体大小
  double get sp => ScreenAdapter.sp(toDouble());

  /// 宽度
  double get ws => ScreenAdapter.w(toDouble());

  /// 高度
  double get hs => ScreenAdapter.h(toDouble());

  /// 响应式尺寸(圆角、边距等)
  double get rs => ScreenAdapter.r(toDouble());
}


// // 基础屏幕信息 (基于ScreenUtil适配)
// ScreenAdapter.screenWidth           // 屏幕宽度
// ScreenAdapter.screenHeight          // 屏幕高度
// ScreenAdapter.statusBarHeight       // 状态栏高度
// ScreenAdapter.bottomBarHeight       // 底部安全区高度 (原有的)
// ScreenAdapter.bottomSafeAreaHeight  // 底部安全区高度 (新增的别名)
//
// // UI组件高度常量
// ScreenAdapter.appBarHeight                    // AppBar高度 (56.0)
// ScreenAdapter.bottomNavigationBarHeight       // 底部导航栏高度 (56.0)
//
// // 计算方法
// ScreenAdapter.contentHeight                   // 内容区高度
// ScreenAdapter.screenHeightRatio(0.5)         // 屏幕高度的50%
// ScreenAdapter.screenWidthRatio(0.8)          // 屏幕宽度的80%
//
// // 适配方法
// ScreenAdapter.w(100)     // 宽度适配
// ScreenAdapter.h(50)      // 高度适配
// ScreenAdapter.sp(16)     // 字体适配
// ScreenAdapter.r(8)       // 半径适配

// 简洁的数值适配
// width: 100.ws,
// height: 50.hs,
// fontSize: 16.fs,
// borderRadius: 8.rs,


